package com.itmeima.dao.impl;

import com.itmeima.bean.Manager;
import com.itmeima.bean.Subway;
import com.itmeima.dao.SubwayDao;

import java.io.*;
import java.util.ArrayList;

//将subways文件中的地铁站信息读取到另一个集合中

public class SubwayDaoImpl implements SubwayDao {
    private static  ArrayList<Subway> subList = new ArrayList<>();

    //使用静态代码块的形式，在程序一开始运行时，
    // 就将文件中的数据去读取到给定的集合中
    static {
        BufferedReader br = null;
        try {
            br = new BufferedReader(new FileReader("exam\\subways.txt"));
            String line;
            while ((line = br.readLine())!= null){
                String[] split = line.split(",");
                subList.add(new Subway(split[0],split[1],split[2]));
            }
        }catch (IOException e){
            e.printStackTrace();
        }finally {
            if (br!=null){
                try {
                    br.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
    }

    //获取
    @Override
    public ArrayList<Subway> getList() {
        //将存储了地铁信息的集合返回给上一层
        return subList;
    }

    //添加
    @Override
    public boolean addSubways(Subway sub){
        //判断是否添加集合成功
        if (subList.add(sub)){
            //成功就将添加的数据写入到本地文件中
            BufferedWriter bw = null;
            try {
                bw = new BufferedWriter(new FileWriter("exam\\subways.txt",true));
                bw.newLine();
                bw.write(sub.getSubID()+","+sub.getSubName()+","+sub.getRoute());
            } catch (IOException e) {
                e.printStackTrace();
            }finally {
                if (bw!=null){
                    try {
                        bw.close();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }else {
                    //如果bw为null，表示没有写入文件成功，那么就是添加失败
                    //那么删除在集合中添加的数据，提示重新输入
                    subList.remove(subList.size()-1);
                    System.out.println("写入失败，请重新输入");
                    return false;
                }
            }
            return true;
        }
        //添加集合失败返回false
        return false;
    }
}
